#include <stdio.h>
#define key(A) (A.str) // wyznaczenie klucza
#define ALPHA 0 

// struktura wezla
struct Node {
  char *str;
};
typedef struct Node node;

// prototypy
inline unsigned digit(node , int b); // b-ta liczba jako fragment klucza

int main()
{
  int i;
  int h;
  node nodestab[] = {"now", "for", "tip", "ilk", "dim", "tag", "jot", "sob", "nob", "sky", "hut", "ace", "bet", "men", "egg", "few", "jay", "owl", "joy", "rap", "gig", "wee", "was", "cab", "wad", "caw", "cue", "fee", "tap", "ago", "tar", "jam", "dug", "and"};
  int nnr = sizeof nodestab / sizeof(node);
  for(i = 0; i < nnr; i++) {
    printf("%s\t", nodestab[i].str);
    h = digit(nodestab[i],0)*128*128 + digit(nodestab[i],1)*128 + digit(nodestab[i],2);
    printf("%i \t %i \t %i", h, h%64, h%31);
    printf("\n");
  }
  return 0;
}

// definicje funkcji
inline unsigned digit(node a, int b)
{
  return  key(a)[b] - ALPHA;
}
